package com.pai4j.common.util;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class HtmlSplitter {


    private static final String SPLIT_TAG = "H1";

    private static final String CUSTOM_TITLE_ATTR = "data-title";
    /**
     * 对富文本html内容实现切片
     *
     * 默认基于以及标题及标题下的内容实现切片策略
     * 实现思路：
     * 1、jsoup将html转dom，基于dom对象提取标题、段落信息，结合策略完成切换
     * 2、html转成marked
     * # 一级标题
     * 大家啊说过的话杰卡斯更大
     * ```json
     *
     * ```
     * # 一级标题
     *
     * @param html
     * @return
     */
    public static List<SplitResult> split(String html) {

        return split(html, false);
    }

    public static List<SplitResult> split(String html, boolean filterText) {

        if (StringUtils.isBlank(html)) {
            return Collections.emptyList();
        }

        List<Element> splitList = new ArrayList<>();
        Document document = Jsoup.parse(html);
        // 获取html body标签下所有标签
        Elements elements = document.body().children();

        Element currentElement = null;

        /**
         * 递归深度遍历处理dom树所有节点
         */
        currentElement = deepSplit(elements, currentElement, splitList);
        if (currentElement != null) {
            splitList.add(currentElement);
        }
        if (CollectionUtils.isEmpty(splitList)) {
            splitList.add(currentElement);
        }
        if (CollectionUtils.isEmpty(splitList)) {
            return Collections.emptyList();
        }
        return splitList.stream().map(elem -> {
            String title = elem.attr(CUSTOM_TITLE_ATTR);
            String value = filterText ? elem.text() : elem.html();
            return new SplitResult(title, value);
        }).toList();
    }

    /**
     *
     * @param elements
     * @param currentElement
     * @param splitList
     */
    private static Element deepSplit(Elements elements, Element currentElement, List<Element> splitList) {

        for (Element element : elements) {
            /**
             * 识别当前标签是否一级标题
             */
            if (SPLIT_TAG.equals(element.tagName().toUpperCase())) {
                if (currentElement != null) {
                    splitList.add(currentElement);
                }
                currentElement = new Element("div");
                currentElement.attr(CUSTOM_TITLE_ATTR, element.text());
                currentElement.appendChild(element.clone());
            } else {
                if (currentElement != null) {
                    currentElement.appendChild(element);
                }
            }
            Elements deepElements = element.children();
            if (deepElements != null) {
                deepSplit(deepElements, currentElement, splitList);
            }
        }
        return currentElement;
    }


    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class SplitResult {

        private String title;
        private String content;
    }

    public static void main(String[] args) {
        String html = "<div class=\"w-e-scroll\" style=\"overflow-y: auto;\"><div id=\"we-0\" data-slate-editor=\"\" data-slate-node=\"value\" suppresscontenteditablewarning=\"\" role=\"textarea\" spellcheck=\"true\" autocorrect=\"true\" autocapitalize=\"true\" contenteditable=\"false\" style=\"padding: 0px;\"><a name=\"title-0\" style=\"scroll-margin-top: 70px\"></a><h1 id=\"w-e-element-0\" data-slate-node=\"element\"><span id=\"w-e-text-1\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">\uD83D\uDC4F  欢迎加入课程学习</span></span></span></h1><p id=\"w-e-element-86\" data-slate-node=\"element\"><span id=\"w-e-text-52\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">首先，感谢各位同学、兄弟姐妹、技术佬对</span></span></span><span id=\"w-e-text-51\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><strong><span data-slate-string=\"true\">《chat4j企业级微服务架构IM项目实战课》</span></strong></em></span></span><span id=\"w-e-text-53\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">的认可，再次欢迎大家加入课程学习！在未来的日子里希望我们可以</span></span></span><span id=\"w-e-text-22\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\" style=\"color: rgb(225, 60, 57);\">亦师亦友、互相学习、互相成就！</span></span></span></p><p id=\"w-e-element-78\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-70\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><strong><span data-slate-string=\"true\">“不是技术不值钱了，而是不值钱的技术（人）一直都不值钱！”</span></strong></em></span></span></p><p id=\"w-e-element-108\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-71\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">有人说现在技术(人)不值钱了，这一点我个人并不认同。工程师跟其他行业最大的不同在于技术更新迭代太快，而我们每个人都需要</span></span></span><span id=\"w-e-text-24\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(225, 60, 57);\"><strong><span data-slate-string=\"true\">保持持续学习的热情</span></strong></em></span></span><span id=\"w-e-text-28\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(225, 60, 57);\"><span data-slate-string=\"true\">和</span></em></span></span><span id=\"w-e-text-87\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(225, 60, 57);\"><strong><span data-slate-string=\"true\">对新技术积极拥抱的态度</span></strong></em></span></span><span id=\"w-e-text-88\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\" style=\"color: rgb(225, 60, 57);\"><span data-slate-string=\"true\">，</span></strong></span></span><span id=\"w-e-text-72\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">这样我们和我们的技术永远在任何时候都不会贬值。</span></span></span></p><a name=\"title-4\" style=\"scroll-margin-top: 70px\"></a><h1 id=\"w-e-element-99\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-98\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">\uD83E\uDDD1&zwj;\uD83D\uDCBB 关于作者</span></span></span></h1><p id=\"w-e-element-109\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-101\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><strong><span data-slate-string=\"true\">程序员七七 (微信：CODER-77) </span></strong></em></span></span></p><p id=\"w-e-element-119\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-232\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">\uD83E\uDEAA BAT互联网大厂 </span></em></span></span><span id=\"w-e-text-231\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">8 </span></strong></em></span></span><span id=\"w-e-text-233\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">年Java资深后端、面试官、架构、导师</span></em></span></span></p><p id=\"w-e-element-120\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-462\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">\uD83D\uDEDC</span></em></span></span><span id=\"w-e-text-461\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\"><em><strong><span data-slate-string=\"true\">  </span></strong></em></u></span></span><a href=\"https://www.coderutil.com\" target=\"_blank\" id=\"w-e-element-457\" data-slate-node=\"element\" data-slate-inline=\"true\"><span id=\"w-e-text-458\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\"><em><strong><span data-slate-string=\"true\">https://www.coderutil.com</span></strong></em></u></span></span></a><span id=\"w-e-text-459\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\"><em><strong><span data-slate-string=\"true\"> </span></strong></em></u></span></span><span id=\"w-e-text-460\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\"> 200万人次使用编程技术社区 作者</span></em></span></span></p><p id=\"w-e-element-117\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-450\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">\uD83E\uDDD1&zwj;\uD83C\uDFEB  </span></em></span></span><a href=\"https://chat4j.com\" target=\"_blank\" id=\"w-e-element-451\" data-slate-node=\"element\" data-slate-inline=\"true\"><span id=\"w-e-text-452\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\"><em><strong><span data-slate-string=\"true\">https://chat4j.com</span></strong></em></u></span></span></a><span id=\"w-e-text-453\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\"> </span></span></span><span id=\"w-e-text-454\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\"> 企业级分布式微服务在线IM编程学习项目 作者</span></em></span></span></p><a name=\"title-9\" style=\"scroll-margin-top: 70px\"></a><h1 id=\"w-e-element-113\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-114\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">\uD83D\uDCBB 关于项目</span></span></span></h1><a name=\"title-10\" style=\"scroll-margin-top: 70px\"></a><h2 id=\"w-e-element-187\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-104\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">项目简介</span></span></span></h2><p id=\"w-e-element-198\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-199\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><strong><span data-slate-string=\"true\">chat4j(chat for java), 在线聊天室java实现版本实现。</span></strong></em></span></span></p><p id=\"w-e-element-202\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-201\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">  项目支持了单体和前后端分离微服务微服务架构两个版本，采用当前java方向企业级主流项目架构、工程模式以及主流技术栈，具备</span></span></span><span id=\"w-e-text-195\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">高技术价值</span></strong></span></span><span id=\"w-e-text-197\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">。同时IM相关产品在任何一家企业都是妥妥的核心业务线、由核心业务部门开发维护，因此项目具备</span></span></span><span id=\"w-e-text-192\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">高业务价值</span></strong></span></span><span id=\"w-e-text-194\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">。</span></span></span></p><a name=\"title-13\" style=\"scroll-margin-top: 70px\"></a><h2 id=\"w-e-element-301\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-267\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F 单体版本 </span></strong></em></span></span></h2><p id=\"w-e-element-463\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-464\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(225, 60, 57); background-color: rgb(252, 237, 225);\"><strong><span data-slate-string=\"true\">⚠\uFE0F注意：单体版本将不在更新迭代，后续更新迭代在微服务版本进行！！</span></strong></em></span></span></p><p id=\"w-e-element-465\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-466\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F 单体版本支持的功能介绍</span></strong></em></span></span></p><p id=\"w-e-element-236\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-237\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">演示环境： </span></strong></em></span></span><a href=\" http://8.140.184.12:8101/\" target=\"_blank\" id=\"w-e-element-220\" data-slate-node=\"element\" data-slate-inline=\"true\"><span id=\"w-e-text-224\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\"> </span></span></span><span id=\"w-e-text-223\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\"><em><span data-slate-string=\"true\">http://8.140.184.12:8101/ 账密: admin/admin</span></em></u></span></span></a><span id=\"w-e-text-222\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">  </span></span></span></p><p id=\"w-e-element-75\" data-slate-node=\"element\" style=\"text-align: left; display: none;\"><span id=\"w-e-text-76\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\" style=\"color: rgb(54, 88, 226);\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></strong></span></span><span id=\"w-e-element-205\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"></span></p><div id=\"w-e-image-container-205\" class=\"w-e-image-container\" style=\"width: 30%; margin-top: 10px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_8f9be1cb79aa474d89f05f3c27dd5de6.png\" alt=\"file_8f9be1cb79aa474d89f05f3c27dd5de6.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-206\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span><span id=\"w-e-text-207\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-208\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-208\" class=\"w-e-image-container\" style=\"width: 30%;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_d6c9003d3d0e4ef69919c1504b6bdd8a.png\" alt=\"file_d6c9003d3d0e4ef69919c1504b6bdd8a.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-209\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-210\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-211\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-211\" class=\"w-e-image-container\" style=\"width: 30%;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_86319475d8064eb1829f6d77c4a85b94.png\" alt=\"file_86319475d8064eb1829f6d77c4a85b94.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-212\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-213\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"n\">&#xFEFF;<br></span></span></span><p style=\"display: none;\"></p><p id=\"w-e-element-252\" data-slate-node=\"element\"><span id=\"w-e-text-253\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">单体版本支持用户侧和管理后台两部分内容。</span></span></span></p><p id=\"w-e-element-256\" data-slate-node=\"element\"><span id=\"w-e-text-264\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">用户侧支持：</span></strong></span></span><span id=\"w-e-text-265\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">登录注册、滑块验证、添加好友、好友列表、IM单聊群聊对话、公众号推文、朋友圈、基于大模型机器人、基于公众号文章RAG助手、抽奖、红包钱包、音视频通话、消息内容搜索引擎等IM核心能力。</span></span></span></p><p id=\"w-e-element-259\" data-slate-node=\"element\"><span id=\"w-e-text-262\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">管理侧支持：</span></strong></span></span><span id=\"w-e-text-263\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">账号管理、钱包管理、公众号文章管理、滑块验证配置管理、抽奖管理、消息管理及部分。</span></span></span></p><p id=\"w-e-element-397\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-277\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F 单体版本技术栈</span></strong></em></span></span></p><p id=\"w-e-element-400\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-401\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">后端：</span></strong></em></span></span><span id=\"w-e-text-402\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">JDK8、WebSocket、WebRTC、SpringBoot2.x、JPA、Mysql、Redis、ES、MQ（redis实现版，普通队列、延迟队列）；LLM大模型能力接入、Prompt工程、模版引擎、基于ES+LLM的RAG实现，红包算法、抽奖算法，发布订阅，抽象工厂设计模式，自定以权控注解，Swagger接口文档。</span></em></span></span></p><p id=\"w-e-element-408\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-404\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">前端：</span></strong></em></span></span><span id=\"w-e-text-405\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">原生HTML、CSS3、JavaScript、Jquery、LayUi等</span></em></span></span></p><p id=\"w-e-element-308\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-294\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F 单体版本代码库</span></strong></em></span></span></p><p id=\"w-e-element-309\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-321\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">git仓库链接获取地址：</span></strong></em></span></span><span id=\"w-e-text-320\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><em><strong><span data-slate-string=\"true\">  </span></strong></em></u></span></span><a href=\"https://chat4j.com/git\" target=\"_blank\" id=\"w-e-element-314\" data-slate-node=\"element\" data-slate-inline=\"true\"><span id=\"w-e-text-315\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><em><span data-slate-string=\"true\">https://chat4j.com/git</span></em></u></span></span></a><span id=\"w-e-text-316\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">  </span></span></span></p><p id=\"w-e-element-325\" data-slate-node=\"element\" style=\"text-align: left; display: none;\"><span id=\"w-e-text-304\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-zero-width=\"z\">&#xFEFF;</span></strong></em></span></span><span id=\"w-e-element-305\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"></span></p><div id=\"w-e-image-container-305\" class=\"w-e-image-container\" style=\"width: 336.5px; height: 190.26px; margin-top: 10px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_4b74ac6c91b74df09b393f7124849183.png\" alt=\"file_4b74ac6c91b74df09b393f7124849183.png\" style=\"width: 100%; height: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-306\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span><span id=\"w-e-text-307\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-322\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-322\" class=\"w-e-image-container\" style=\"width: 338.5px; height: 197.9px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_358181017d8e4b11820617d791d9f739.png\" alt=\"file_358181017d8e4b11820617d791d9f739.png\" style=\"width: 100%; height: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-323\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-38\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-zero-width=\"n\">&#xFEFF;<br></span></strong></span></span><p style=\"display: none;\"></p><a name=\"title-41\" style=\"scroll-margin-top: 70px\"></a><h2 id=\"w-e-element-268\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-274\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F 前后端分布式微服务架构版本</span></strong></em></span></span></h2><p id=\"w-e-element-326\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-390\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F 微服务版本支持的功能介绍</span></strong></em></span></span></p><p id=\"w-e-element-426\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-329\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">演示环境:  </span></strong></em></span></span><a href=\"http://43.138.184.148:5001/\" target=\"_blank\" id=\"w-e-element-445\" data-slate-node=\"element\" data-slate-inline=\"true\"><span id=\"w-e-text-446\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><em><span data-slate-string=\"true\">http://43.138.184.148:5001/ 账密：chat4j/chat4j</span></em></u></span></span></a><span id=\"w-e-text-447\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><em><span data-slate-string=\"true\"> </span></em></u></span></span><a href=\" http://8.140.184.12:8101/\" target=\"_blank\" id=\"w-e-element-428\" data-slate-node=\"element\" data-slate-inline=\"true\"><span id=\"w-e-text-331\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\"> </span></span></span></a><span id=\"w-e-text-429\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></p><p id=\"w-e-element-448\" data-slate-node=\"element\" style=\"text-align: left; display: none;\"><span id=\"w-e-text-425\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-433\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"></span></p><div id=\"w-e-image-container-433\" class=\"w-e-image-container\" style=\"width: 30%; margin-top: 10px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_24f176973f624143aa762a58f4caaf1e.png\" alt=\"file_24f176973f624143aa762a58f4caaf1e.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-434\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span><span id=\"w-e-text-438\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-439\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-439\" class=\"w-e-image-container\" style=\"width: 30%;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_f91ac71f0a86477daf68b0b165996739.png\" alt=\"file_f91ac71f0a86477daf68b0b165996739.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-440\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-441\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-442\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-442\" class=\"w-e-image-container\" style=\"width: 30%;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_2167803af67648f1bc7f620deec376e5.png\" alt=\"file_2167803af67648f1bc7f620deec376e5.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-443\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-432\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"n\">&#xFEFF;<br></span></span></span><p style=\"display: none;\"></p><p id=\"w-e-element-423\" data-slate-node=\"element\" style=\"text-align: center; display: none;\"><span id=\"w-e-text-333\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">  </span></span></span></p><p id=\"w-e-element-345\" data-slate-node=\"element\"><span id=\"w-e-text-346\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">微服务版本支持统一登录、IM客户端服务和管理后台三部分内容。</span></span></span></p><p id=\"w-e-element-347\" data-slate-node=\"element\"><span id=\"w-e-text-420\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">用户侧支持：</span></strong></span></span><span id=\"w-e-text-419\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">统一登录、类微信核心IM服务、服务号动态消息卡、公众号订阅推文、企业级圈子服务、企业级AGENT助手、搜索引擎、音视频通话、支付平台、商城服务……持续迭代</span></span></span></p><p id=\"w-e-element-350\" data-slate-node=\"element\"><span id=\"w-e-text-351\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">管理侧支持：</span></strong></span></span><span id=\"w-e-text-352\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">账号管理、钱包管理、公众号文章管理、接入应用管理、滑块验证配置管理、抽奖管理、消息管理……</span></span></span></p><p id=\"w-e-element-353\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-391\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F 微服务版本技术栈</span></strong></em></span></span></p><p id=\"w-e-element-409\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-410\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">前后端分离：前端目前有三个服务、后端13个微服务</span></strong></em></span></span></p><p id=\"w-e-element-411\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-412\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">后端：</span></strong></em></span></span><span id=\"w-e-text-413\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">JDK17、WebSocket、WebRTC、SpringBoot3.x、SpringCloud、GateWay、Nacos、Sharding-jdbc、JPA、Mysql、Redis、ES、RocketMQ、Redis实现Mq（redis实现版，普通队列、延迟队列）、LUA、OpenFeign；LLM大模型能力接入、Prompt工程、模版引擎、基于ES+LLM的RAG实现，红包算法、抽奖算法，发布订阅，抽象工厂设计模式，自定以权控注解等（持续迭代）。</span></em></span></span></p><p id=\"w-e-element-414\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-415\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\" style=\"color: rgba(0, 0, 0, 0.85); font-size: 14px;\"><span data-slate-string=\"true\">成熟方案：</span></strong></span></span><span id=\"w-e-text-416\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\" style=\"color: rgba(0, 0, 0, 0.85); font-size: 14px;\">统一登录SSO、分布式WebSocket Session共享、IM网页实时对话架构、并发场景下秒杀解决方案、大模型Agent+RAG、朋友圈写扩散+分库分表+冷热分离、多人音视频通话、基于SOA思想的微服务拆分等</span></span></span></p><p id=\"w-e-element-417\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-418\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">前端：Vue3、nodejs、ant-design-vue组织库、Vite、Npm包管理、Nginx</span></strong></em></span></span></p><p id=\"w-e-element-361\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-467\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F\uD83C\uDF1F 微服务架构版本代码库</span></strong></em></span></span></p><p id=\"w-e-element-363\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-364\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><strong><span data-slate-string=\"true\">git仓库链接获取地址：</span></strong></em></span></span><span id=\"w-e-text-365\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><em><strong><span data-slate-string=\"true\">  </span></strong></em></u></span></span><a href=\"https://chat4j.com/git\" target=\"_blank\" id=\"w-e-element-366\" data-slate-node=\"element\" data-slate-inline=\"true\"><span id=\"w-e-text-367\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><em><span data-slate-string=\"true\">https://chat4j.com/git</span></em></u></span></span></a><span id=\"w-e-text-368\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">  </span></span></span></p><p id=\"w-e-element-502\" data-slate-node=\"element\" style=\"text-align: left; display: none;\"><span id=\"w-e-text-488\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-489\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"></span></p><div id=\"w-e-image-container-489\" class=\"w-e-image-container\" style=\"width: 30%; margin-top: 10px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_1bb84b059f9742089a19e00775a85cd3.png\" alt=\"file_1bb84b059f9742089a19e00775a85cd3.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-490\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span><span id=\"w-e-text-491\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-492\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-492\" class=\"w-e-image-container\" style=\"width: 30%;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_c44b77919ca144c7bda95e48ee76eaa1.png\" alt=\"file_c44b77919ca144c7bda95e48ee76eaa1.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-493\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-473\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></strong></span></span><span id=\"w-e-element-503\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-503\" class=\"w-e-image-container\" style=\"width: 30%;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/bbs-image/file_cee03fd64be74de5b65138be4a764e15.png\" alt=\"file_e36bf9d0574d45ab9413519f39fe6e86.png\" style=\"width: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-504\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-505\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"n\">&#xFEFF;<br></span></span></span><p style=\"display: none;\"></p><a name=\"title-73\" style=\"scroll-margin-top: 70px\"></a><h1 id=\"w-e-element-477\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-476\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">\uD83D\uDC65 适合哪些人学</span></strong></span></span></h1><p id=\"w-e-element-540\" data-slate-node=\"element\" style=\"text-align: left; display: none;\"><span id=\"w-e-text-479\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><strong><span data-slate-string=\"true\"> </span></strong></em></span></span></p><p id=\"w-e-element-509\" data-slate-node=\"element\" style=\"text-align: left; display: none;\"><span id=\"w-e-text-508\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></strong></span></span><span id=\"w-e-element-541\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"></span></p><div id=\"w-e-image-container-541\" class=\"w-e-image-container\" style=\"width: 339.5px; height: 72.44px; margin-top: 10px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_57b1787d815044ceb7a749c60f762111.png\" alt=\"file_57b1787d815044ceb7a749c60f762111.png\" style=\"width: 100%; height: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-542\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span><span id=\"w-e-text-549\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-550\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-550\" class=\"w-e-image-container\" style=\"width: 334.5px; height: 72.84px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_c6c7af70389f4b0f8f05b760e2f2a2f6.png\" alt=\"file_c6c7af70389f4b0f8f05b760e2f2a2f6.png\" style=\"width: 100%; height: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-551\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-552\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"n\">&#xFEFF;<br></span></span></span><p style=\"display: none;\"></p><p id=\"w-e-element-653\" data-slate-node=\"element\" style=\"text-align: left; display: none;\"><span id=\"w-e-text-555\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-559\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"></span></p><div id=\"w-e-image-container-559\" class=\"w-e-image-container\" style=\"width: 332.5px; height: 63.71px; margin-top: 10px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_3375883f0d3c4f6e843976a632664a98.png\" alt=\"file_3375883f0d3c4f6e843976a632664a98.png\" style=\"width: 100%; height: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-560\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span><span id=\"w-e-text-561\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span><span id=\"w-e-element-556\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"><div id=\"w-e-image-container-556\" class=\"w-e-image-container\" style=\"width: 339.5px; height: 64.55px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_f9ffa0994f5d426cbe840673e6cc3425.png\" alt=\"file_f9ffa0994f5d426cbe840673e6cc3425.png\" style=\"width: 100%; height: 100%;\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-557\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span></span><span id=\"w-e-text-617\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"n\">&#xFEFF;<br></span></span></span><p style=\"display: none;\"></p><a name=\"title-89\" style=\"scroll-margin-top: 70px\"></a><h1 id=\"w-e-element-652\" data-slate-node=\"element\"><span id=\"w-e-text-47\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">\uD83D\uDEDC 学习社区</span></strong></span></span></h1><p id=\"w-e-element-589\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-626\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">官网唯一指定学习社区：</span></strong></span></span><span id=\"w-e-text-625\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><em><strong><span data-slate-string=\"true\"> </span></strong></em></u></span></span><a href=\"  https://chat4j.com\" target=\"_blank\" id=\"w-e-element-622\" data-slate-node=\"element\" data-slate-inline=\"true\"><span id=\"w-e-text-623\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><u class=\"token italic\" style=\"color: rgb(54, 88, 226);\"><em><strong><span data-slate-string=\"true\">  https://chat4j.com</span></strong></em></u></span></span></a><span id=\"w-e-text-624\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-string=\"true\">   </span></span></span></p><p id=\"w-e-element-627\" data-slate-node=\"element\" style=\"display: none;\"><span id=\"w-e-text-609\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></strong></span></span><span id=\"w-e-element-613\" data-slate-node=\"element\" data-slate-inline=\"true\" data-slate-void=\"true\" style=\"position: relative;\"></span></p><div id=\"w-e-image-container-613\" class=\"w-e-image-container\" style=\"margin-top: 10px;\"><img src=\"https://coderutil.oss-cn-beijing.aliyuncs.com/resource/file_fed9110e4e6d4b4abe28baaf42b12be5.png\" alt=\"file_fed9110e4e6d4b4abe28baaf42b12be5.png\"></div><span data-slate-spacer=\"true\" style=\"height: 0px; color: transparent; outline: none; position: absolute;\"><span id=\"w-e-text-614\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><span data-slate-zero-width=\"z\">&#xFEFF;</span></span></span></span><span id=\"w-e-text-612\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-zero-width=\"n\">&#xFEFF;<br></span></strong></span></span><p style=\"display: none;\"></p><a name=\"title-96\" style=\"scroll-margin-top: 70px\"></a><h1 id=\"w-e-element-659\" data-slate-node=\"element\" style=\"text-align: left;\"><span id=\"w-e-text-655\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><strong class=\"token bold\"><span data-slate-string=\"true\">❓这不是一次普通的知识付费</span></strong></span></span></h1><p id=\"w-e-element-648\" data-slate-node=\"element\"><span id=\"w-e-text-649\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\" style=\"color: rgb(225, 60, 57); background-color: rgb(252, 239, 212);\"><strong><span data-slate-string=\"true\">这不是一次简单的知识付费，对于有些同学来说，我认为是职业生涯乃至人生中的一次超级对的选择！</span></strong></em></span></span></p><p id=\"w-e-element-634\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-660\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">\uD83C\uDF89 首先恭喜你，将获得一次在很多方面都可以少走5年弯路的永久有效期VIP会员服务</span></em></span></span></p><p id=\"w-e-element-638\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-661\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">\uD83C\uDF89 其次，在技术认识、架构抽象能力及互联网核心业务产品的设计思维等方面的一次全面提升</span></em></span></span></p><p id=\"w-e-element-640\" data-slate-node=\"element\" style=\"text-align: center;\"><span id=\"w-e-text-641\" data-slate-node=\"text\"><span data-slate-leaf=\"true\"><em class=\"token italic\"><span data-slate-string=\"true\">\uD83C\uDF89 最后恭喜你，加入一个高质量的技术圈、结交了一位经验丰富的大厂架构老哥终身指导机会</span></em></span></span></p></div></div>";
        List<SplitResult> splitResults = split(html, true);
        System.out.println(splitResults.size());
    }

}
